import { fileURLToPath, URL } from 'node:url'
import { resolve } from 'path'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueDevTools from 'vite-plugin-vue-devtools'

export default defineConfig({
  plugins: [vue(), vueDevTools()],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url)),
      // 组件路径别名,语法：别名：resolve(__dirname,'组件原路径')
      com: resolve(__dirname, 'src/component'),
      //静态资源路径别名
      './image': 'src/assets',
    },
  },
  //配置根路径，解决部署到服务器之后绝对路径会报404问题，所以需改为相对路径
  base: './',
  server: {
    proxy: {
      // 代理路径前缀（例如：/api）
      '/api': {
        target: 'http://localhost:2000', // 后端服务器地址
        changeOrigin: true, // 允许跨域
        rewrite: (path) => path.replace(/^\/api/, ''), // 重写路径（移除 /api 前缀）
      },
    },
  },

  build: {
    minify: 'esbuild',
    sourcemap: false, // 禁用 sourcemap
    cssCodeSplit: false, // 禁用 CSS 代码分割
    target: 'es2015', // 使用较低的目标版本减少转换复杂度
    // 增加块大小警告限制，避免不必要的警告
    chunkSizeWarningLimit: 1500, // 从1000KB提高到1500KB
    rollupOptions: {
      output: {
        manualChunks: {
          vendor: ['vue', 'vue-router', 'pinia'],
          utils: ['lodash', 'axios'],
          // 添加更多手动分块以优化构建
          element: ['element-plus'], // 如果您使用了 Element Plus
        },
        compact: true, // 压缩输出
      },
    },
  },
  esbuild: {
    minifyWhitespace: true,
    minifyIdentifiers: true,
    minifySyntax: true,
    // 添加 legalComments 选项移除法律注释
    legalComments: 'none',
  },
  // 减少日志输出
  logLevel: 'warn',

  // 根据 Vite 5.1 要求更新 optimizeDeps 配置
  optimizeDeps: {
    // 移除已弃用的 disabled 选项
    // 使用新的配置方式
    include: [], // 明确指定需要预构建的依赖
    exclude: [], // 明确指定不需要预构建的依赖
    // 如果您想完全禁用依赖优化，使用以下配置
    noDiscovery: true, // 禁用自动依赖发现
    // include: undefined, // 设置为 undefined 或空数组
  },
})
